﻿//#include <iostream>
//#include <vector>
//#include <string>
//using namespace std;
//
//#include "HashTable.h"
//#include "hash.h"
//
////哈希表的基本功能测试
//void Test01()
//{
//	Close_Hash::HashTable<int, int> ht;
//	int a[] = { 4,9,6,23,5,1,7,3,8,1 };
//	for (auto e : a)
//	{
//		ht.Insert(make_pair(e, e));
//	}
//	ht.Print();
//	//cout << ht.find(444) << endl;
//	ht.Erase(6);
//	ht.Print();
//	size_t find = ht.Find(6);
//	if (find  == -1)
//	{
//		cout << "寻找的数字不存在！" << endl;
//	}
//	ht.Insert(make_pair(26, 26));
//	ht.Print();
//}
//
////字符串key（模板的特化）
//void test02()
//{
//	HashTable<string, int> ht;
//	string a[] = {"苹果","梨子","梨子","香蕉","苹果" ,"苹果","香蕉","香蕉","香蕉" };
//	for (auto e : a)
//	{
//		auto p = ht.Find(e);
//		if (!p)
//		{
//			ht.Insert(make_pair(e, 1));
//		}
//		else {
//			p->_kv.second++;
//		}
//	}
//	ht.Print();
//	cout << (*(ht.Find("苹果")))._kv.first << "---" << (*(ht.Find("苹果")))._kv.second << endl;
//}
//
////测试哈希桶
//void Test03()
//{
//	int a[] = { 1, 11, 4, 15, 26, 7, 44,55,99,78 };
//	HashBucket::HashTable<int, int> ht;
//	for (auto e : a)
//	{
//		ht.Insert(make_pair(e, e));
//	}
//
//	ht.Insert(make_pair(22, 22));
//	ht.Print();
//}
//
//
//int main()
//{
//	Test01();
//	//Test02();
//	//Test03();
//	return 0;
//}

///////////测试unordered_map和unordered_set
#include <iostream>
using namespace std;
#include "set.h"
#include "map.h"

void test_set()
{
	bit::set<int> s;
	s.Insert(2);
	s.Insert(3);
	s.Insert(1);
	s.Insert(2);
	s.Insert(5);

	bit::set<int>::Iterator it = s.begin();
	//auto it = s.begin();
	while (it != s.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

void test_map()
{
	bit::map<string, string> dict;
	dict.Insert(make_pair("sort", ""));
	dict.Insert(make_pair("string", "ַ"));
	dict.Insert(make_pair("left", ""));

	bit::map<string, string>::Iterator it = dict.begin();
	while (it != dict.end())
	{
		cout << it->first << ":" << it->second << endl;
		++it;
	}
	cout << endl;

	bit::map<string, int> countMap;
	string arr[] = { "2", "", "2", "", "2", "2", "", "2", "dfh", "2", "萨芬开发" };
	for (auto e : arr)
	{
		countMap[e]++;
	}

	for (auto& kv : countMap)
	{
		cout << kv.first << ":" << kv.second << endl;
	}
}


int main()
{
	cout << "unordered_set: " << endl;
	test_set();
	cout << endl;
	cout << "unordered_map: " << endl;
	test_map();
	return 0;
}